/**
 * 定时器控制器
 * 处理系统定时任务
 */
const BaseController = require('../../../framework/controller/base_controller.js');
const EventService = require('../service/event_service.js');
const BaseDataService = require('../service/base_data_service.js');

class TimerController extends BaseController {
  /**
   * 处理待处理事件
   */
  async processEvents() {
    console.log('[Timer] 开始处理待处理事件');
    
    try {
      // 默认一次处理最多20个事件
      const result = await EventService.processPendingEvents(20);
      
      console.log(`[Timer] 事件处理完成，成功: ${result.success}, 失败: ${result.failed}, 总数: ${result.total}`);
      
      return this.success({
        success: result.success,
        failed: result.failed,
        total: result.total
      });
    } catch (err) {
      console.error('[Timer] 处理事件异常:', err);
      return this.fail('处理事件失败: ' + err.message);
    }
  }
  
  /**
   * 刷新基础数据缓存
   */
  async refreshCache() {
    console.log('[Timer] 开始刷新基础数据缓存');
    
    try {
      // 强制刷新用户和部门缓存
      await BaseDataService.getAllUsers(true);
      await BaseDataService.getAllDepts(true);
      
      console.log('[Timer] 基础数据缓存刷新完成');
      
      return this.success({
        result: 'ok'
      });
    } catch (err) {
      console.error('[Timer] 刷新缓存异常:', err);
      return this.fail('刷新缓存失败: ' + err.message);
    }
  }
  
  /**
   * 系统健康检查
   */
  async healthCheck() {
    console.log('[Timer] 执行系统健康检查');
    
    try {
      // 检查事件系统是否正常
      const eventModel = new (require('../config/models_config').event_model)();
      await eventModel.getPendingEvents({ limit: 1 });
      
      // 检查基础数据服务是否正常
      await BaseDataService.getAllUsers();
      
      console.log('[Timer] 系统健康检查通过');
      
      return this.success({
        status: 'healthy',
        timestamp: new Date().toISOString()
      });
    } catch (err) {
      console.error('[Timer] 系统健康检查失败:', err);
      return this.fail({
        status: 'unhealthy',
        error: err.message,
        timestamp: new Date().toISOString()
      });
    }
  }
}

module.exports = TimerController; 